//引入express
const express = require('express');
//创建路由器
const router = express.Router();
//引入BookModel模块
const BookModel = require('../models/BookModel')

//图书列表路由
router.get('/list', (req, res) => {
    //查找所有的book列表
    BookModel.find((error, data) => {
        if (error) {
            //ejs 渲染模板 自动拼接文件名   不需要加/
            res.render('book/error', {
                errorMsg: '获取图书列表失败'
            })
            //成功返回图书列表页面
        } else {
            res.render('book/list', {
                books: data
            })
        }

    })
})

//修改数据路由
router.get('/toUpdate/:id', (req, res) => {
    console.log(333);
    //结构id参数  不定参数 是params参数
    const {
        id
    } = req.params;
    //根据id查询得到对应的book
    BookModel.findById(id, (error, data) => {
        //查询失败,返回错误页面
        if (error) {
            //进入错误页面
            res.render('book/error', {
                errorMsg: '获取图书失败'
            });
        } else {
            //进入更新页面
            res.render('book/addOrUpdate', {
                book: data
            });
        }
    })
})

//添加数据路由
router.get('/toAdd', (req, res) => {
    console.log(2222);
    //跳转addOrUpdate页面
    const book = {
        name: "",
        author: "",
        price: 0
    }
    res.render('book/addOrUpdate', {
        book
    });
})

//添加数据路由(提交 post请求)
/* 
    -读取请求参数: book对象(没有_id)
    -添加到数据库
    -重定向: /book/list
*/
router.post('/add', (req, res) => {
    console.log(1111);
    //读取请求参数: book对象(没有_id)
    const book = req.body;
    //添加到数据库
    BookModel.create(book, (error, data) => {
        //添加失败,返回错误页面
        if (error) {
            res.render('book/error', {
                errorMsg: "添加图书失败"
            });
        } else {
            //添加成功,重定向列表页面
            res.redirect('/book/list');
        }
    })
})

//修改数据路由(提交 post请求)
/* 
    -读取请求参数: book对象(包含_id)
    -修改数据库
    -重定向:/book/list
*/
router.post('/update', (req, res) => {
    //读取请求参数: book对象(包含_id)
    const book = req.body;
    console.log(req.body);
    //添加到数据库
    BookModel.updateOne(
        {_id: book._id},book, (error, data) => {
            //添加失败,跳转错误页面
            if (error) {
                res.render('book/error', {
                    errorMsg: '修改图书失败'
                })
            } else {
                //修改成功,重定向列表页面
                res.redirect('/book/list');
            }
        })
})


//删除数据路由
/* 
    -读取请求参数的id
    -删除对应的文档
    -重定向:/book/list
*/
router.get('/remove/:id', (req, res) => {
    //读取请求参数 id
    const { id } = req.params;
    //删除对应的数据文档
    BookModel.deleteOne({ _id: id }, (error, data) => {
        if (error) {
                res.render('book/error',{errorMsg: '删除图书失败'});
        } else {
            //删除成功重定向
            res.redirect('/book/list')
            }
    })

})

//暴露路由
module.exports = router;